筆記目錄

Skip to content

使用 Windows Docker Desktop 建立 Oracle 環境

TLDR

  • Oracle 官方不再提供直接下載的 Docker Image,必須從 GitHub 下載 Dockerfile 並手動建置。
  • Windows 環境下必須具備 Linux Bash Shell(如 Git Bash 或 WSL)。
  • 建置 Image 時,若遇到 MD5 checksums 錯誤,可加上 -i 參數忽略檢查。
  • 若建置過程中出現 Image 不存在的錯誤,請檢查 Dockerfile 中的 FROM oraclelinux tag 是否過舊,建議改為 7-slim
  • 12c 以上版本採用 CDB/PDB 架構,建立使用者時需切換至 PDB,並使用 SERVICE_NAME 進行連線。
  • 容器啟動後,若發現自訂使用者消失,通常是因為 PDB 掛載較慢,請耐心等待。
  • 經測試,11g 與 12c XE 版本在 Windows 下易發生資料夾權限問題,建議優先使用 19c SE2 版本。

環境建置與 Image 製作

什麼情況下會遇到這個問題:當你需要安裝 Oracle 資料庫,但 Docker Hub 已無官方預建 Image 時。

由於 Oracle 官方已停止提供直接下載的 Image,必須透過 Oracle GitHub 資源進行建置。在 Windows 環境下,請確保已安裝 Git Bash 或 WSL 以執行 Linux Shell 指令。

建置步驟與注意事項

  1. 下載對應版本的 Dockerfile 後,進入該目錄執行建置指令: ./buildContainerImage.sh -v [version] -t [image_name:tag] [-e | -s | -x] [-i] [-o]
  2. 處理 MD5 錯誤:若執行時出現 MD5 checksums 錯誤,請在指令後方加上 -i 參數以忽略檢查。
  3. 處理 Image 不存在錯誤:若建置失敗並顯示 Image 不存在,請開啟 Dockerfile 檢查 FROM 指令後的 tag(例如 oraclelinux),並至 Oracle Docker Hub 確認該 tag 是否存在,建議更新為 7-slim

容器部署與設定

什麼情況下會遇到這個問題:當 Image 建置完成,需要透過 Docker Compose 啟動服務時。

請使用以下範本建立 docker-compose.yml

yaml
version: '3.7'

services:
  TP-Oracle:
    image: oracle/database:{image tag}
    container_name: TP-Oracle
    ports:
      - 1521:1521
      - 5500:5500
      - 8080:8080
    volumes:
      - {local oradata}:/opt/oracle/oradata
      - {local scripts/startup}:/opt/oracle/scripts/startup
      - {local scripts/setup}:/opt/oracle/scripts/setup
    restart: always
    environment:
      - ORACLE_PWD={your password}
      - ORACLE_CHARACTERSET=AL32UTF8

TIP

容器啟動需要較長時間,請透過 Docker Dashboard 查看 Log 確認初始化進度。

資料庫使用者管理與 PDB 切換

什麼情況下會遇到這個問題:在使用 12c 以上版本時,因 CDB/PDB 架構導致無法直接登入或找不到使用者。

若出現 ORA-01017: invalid username/password 錯誤,請依下列步驟處理:

  1. 執行 show pdbs 查看 PDB 名稱(通常為 ORCLPDB1XEPDB1)。
  2. 執行 ALTER SESSION SET CONTAINER={查詢到的名稱} 切換至 PDB。
  3. 在 PDB 中重新建立使用者與權限。
  4. 連線時,請務必使用 SERVICE_NAME={PDB Name} 進行連線,而非 SID

常見問題與踩雷紀錄

資料夾權限異常

在 Windows 環境下,安裝 11g 與 12c 的 XE 版本常發生資料夾權限錯誤,導致 Container 無法正常運行。經測試,19c SE2 版本在 Windows 下運作較為穩定。

使用者消失問題

當電腦或 Docker 重啟後,若發現剛建立的使用者消失,通常是因為 PDB 資料庫掛載速度較慢。請靜置等待一段時間,待資料庫完全啟動後即可恢復正常。

異動歷程

  • 2022-10-24 初版文件建立。